package it.low.game.core.action;

import it.low.game.core.element.ActiveElement;
import it.low.game.core.element.activity.Targetable;


public abstract class Action {
	
	public enum TYPE {MOVE};
	
	protected TYPE type;
	
	protected Targetable[] targets;
		
	public Action(TYPE type, Targetable... targetables){
		this.type = type;
		this.targets = targetables;
	}
		
	public TYPE getType(){
		return type;
	}
	
	public Targetable[] getTargets(){
		return targets;
	}
	
	public abstract boolean start(ActiveElement executor);
	
	public abstract boolean run(ActiveElement executor, long elapsedTime);
	
	public abstract boolean resume(ActiveElement executor);
	
	public abstract boolean stop();
}
